package models

import "strconv"

type ASN struct {
	Asnum   int    `gorm:"column:asnum" json:"asnum"`
	OrgName string `gorm:"column:org_name" json:"org_name"`
}

// Geo 表示地理位置信息
type Geo struct {
	City       string  `gorm:"column:city" json:"city"`
	Region     string  `gorm:"column:region" json:"region"`
	RegionName string  `gorm:"column:region_name" json:"region_name"`
	PostalCode string  `gorm:"column:postal_code" json:"postal_code"`
	Latitude   float64 `gorm:"column:latitude" json:"latitude"`
	Longitude  float64 `gorm:"column:longitude" json:"longitude"`
	Tz         string  `gorm:"column:tz" json:"tz"`
	LumCity    string  `gorm:"column:lum_city" json:"lum_city"`
	LumRegion  string  `gorm:"column:lum_region" json:"lum_region"`
}

type BrightData struct {
	IP        string `gorm:"column:ip;index" json:"ip"`
	IpVersion int    `gorm:"column:ip_version" json:"ip_version"`
	Country   string `gorm:"column:country" json:"country"`
	ASN       ASN    `gorm:"column:asn_str" json:"asn"`
	Geo       Geo    `gorm:"column:geo_str" json:"geo"`
}

func (bd *BrightData) ToIpInfo() IpInfo {
	return IpInfo{
		IP:             bd.IP,
		Country:        bd.Country,
		City:           bd.Geo.Region,
		Asn:            strconv.Itoa(bd.ASN.Asnum),
		AsnType:        "",
		CountryAppoint: "",
	}
}
